package com.leet.code.simple_array;

/**
 * @description:    1304.和为零的N个唯一整数
 * @author: WYG
 * @time: 2020/12/30 17:16
 */

public class SumZero {
    /**
     *我们首先将最小的 n - 1 个自然数 1, 2, ..., n - 1 放入数组中，它们的和为 sum。对于剩下的 1 个数，我们可以令其为 -sum，此时这 n 个数的和为 0，并且：
     *当 n = 1 时，我们构造的答案中只有唯一的 1 个数 0；
     *当 n > 1 时，我们构造的答案中包含 n - 1 个互不相同的自然数和 1 个负数；
     *因此这 n 个数互不相同，即我们得到了一个满足要求的数组。
     * @param n
     * @return
     */
    public int[] sumZero(int n) {
        int[] res = new int[n];
        int sum = 0;
        for (int i = 0; i < n - 1; i++) {
            sum += (i+1);
            res[i] = i + 1;
        }
        res[n - 1] = -sum;
        return res;
    }
}
